/**
 * 1、代码前的分号";", 可以防止多个文件压缩合并后，由于其他文件最后一行没加分号";",而引起的语法错误。
 * 2、匿名函数(function(){})();
 * 		块级作用域
 * 		
 * 		定义函数的方式是创建一个匿名函数，并调用它，调用函数的方式是在函数名称的后面添加一对圆括号。
 * 		function(){
 * 			//这是块级作用域
 * 		}();//报错
 * 		JavaScript将function关键字当作一个函数声明的开始，而函数声明后面不能跟圆括号。然而函数表达式后面可以跟圆括号。
 * 		(function(){
 * 			//这是块级作用域
 * 		})();
 * 3、$实参，在插件中使用$别名,我们在插件的作用域内定义这个快捷方式，定义一个函数并马上调用它。
 * 4、window, document实参分别接受window, document对象，window, document对象都是全局环境下的，
 * 	   而在函数体内的window, document其实是局部变量，不是全局的window, document对象。
 * 	   这样做有个好处就是可以提高性能，减少作用域链的查询时间，
 * 	   如果你在函数体内需要多次调用window 或 document对象，这样把window 或 document对象当作参数传进去，这样做是非常有必要的。
 *    当然如果你的插件用不到这两个对象，那么就不用传递这两个参数了。
 * 5、undefined形参，undefined在老一辈的浏览器是不被支持的，直接使用会报错，js框架要考虑到兼容性，因此增加一个形参undefined
 */
;
(function($, window, document, undefined) {
	$.sum = function(array) {
		var total = 0;
		$.each(array, function(index, value) {
			value = $.trim(value);
			value = parseFloat(value) || 0;
			
			total += value;
		});
		return total;
	};
})(jQuery, window, document);